扒皮云对象存储:从降本到杀猪
对象存储是云计算的定义性服务,曾是云上降本的典范。然而随着硬件的发展,资源云(CF R2)与开源平替(MinIO)的出现,曾经“物美价廉”的对象存储服务失去了性价比,和EBS一样成为了杀猪盘。
我们在《云计算泥石流》系列中已经深入剖析过云上 EC2 算力,EBS 磁盘,RDS 数据库的成本构成,并揭示了公有云真正的商业模式 —— 廉价EC2/S3获客,EBS/RDS杀猪。但在当下,“廉价”S3已经名不副实了。
今天,就让我们来检视一下最后一个云服务之锚 —— 对象存储。
从降本到杀猪
对像存储,又称简单存储服务(Simple Storage Service,缩写为 S3,以下用S3代指), 曾经是云上“物美价廉”的拳头产品。
在十几年前,硬件的价格高昂;能够用一堆几百GB的机械硬盘,三副本搭建可靠的存储服务,并设计实现一套优雅的 HTTP API,还是一件颇有门槛的事情;因此相对于那些“企业级IT”存储方案,物美价廉的 S3 显得很有吸引力。
但是计算机硬件这个领域非常特殊 —— 有着一个价格每两年减半的摩尔定律。在 AWS S3 的历史上的确有过几次降价,下面的表格里整理了几次主要降价后的 S3 标准档存储单价,也整理了对应年份企业级 HDD/SSD 的参考单位价格。
不难看出,S3 标准档的单价从 2006 年的 0.15 $/GB·月 到 2023 年的 0.023 $/GB·月 ,降到原来的 15%,便宜了 6 倍,听上去不错;然而当你考虑到 S3 底层 HDD 的价格从降到原来的 3.7% ,便宜了整整 26 倍时,就能发现这里面的猫腻了。
S3 的资源溢价倍数从 2006 年的 7 倍增长到了当下的 30 倍!
在2023年当下,当我们重新进行成本核算时,不难看出 S3 / EBS 这类存储服务的性价比早已今非昔比 —— 云上的算力 EC2 相比自建 服务器有着 5 ~ 10 倍的溢价,而云上的块存储 EBS 相对本地SSD有着几十倍到一两百倍的溢价。云上的 S3 相对普通机械硬盘也有着几十倍左右的资源溢价。作为云服务之锚的 S3 / EBS / EC2 价格,又会传导到几乎所有的云服务上去 —— 这让云服务的整体性价比彻底丧失吸引力。
这里的核心问题是:硬件资源的价格随着摩尔定律以指数规律下降,但节省的成本并没有穿透云厂商这个中间层,传导到终端用户的服务价格上。 逆水行舟,不进则退,降价速度跟不上摩尔定律就是其实就是变相涨价。以S3为例,在过去十几年里,云厂商S3虽然名义上降价6倍,但硬件资源却便宜了 26 倍,所以 S3 的价格实际上是涨了 4 倍。
成本、延迟、吞吐
尽管云服务有着高昂的溢价,但如果它是不可替代的最优选,那么即使溢价高性价比低,也不影响价格钝感的高价值头部客户使用。然而不仅仅是成本,存储硬件的性能也遵循摩尔定律,随着时间累积,自建S3的性能也开始出现显著优势。
S3 的性能主要体现在吞吐量上,AWS S3 的 100 Gb/s 网络提供了高达 12.5 GB/s 的访问带宽,这一点确实值得称道。这样的吞吐量放在十年前毫无疑问是让人震撼的,然而在今天,一块两万块不到的企业级 12 TB NVMe SSD ,单卡就可以达到 14 GB/s 的读写带宽,100Gb的交换机和网卡也已经非常普及,想做到这一点并不复杂。
在另一个关键性能指标“延迟”上,S3 更是被本地磁盘吊打。S3 标准档的首字节延迟相当拉垮[7],根据文档说明在 100~200ms 百毫秒的范围。当然 AWS 也刚刚在 2023 Re:Invent 上新发布了 “高性能S3” —— S3 Express One Zone ,能够达到单毫秒级的延迟,弥补了这个短板。但是和 4K随机读/写延迟 55µs/9µs 十微秒量级的NVMe SSD 还是相距甚远。
S3 Express 的毫秒级延迟听上去很不错,但在 NVMe SSD + MinIO 自建面前就只能自惭形秽了 —— 当代的 NVMe SSD 的4K随机读/写延迟已经达到了 55µs/9µs ,套上一层薄薄的 MinIO 转发,首字节输出延迟要比 S3 Express 好了接近一个数量级。如果用标准档 S3 对比,延迟差距可以进一步放大到三个数量级。
性能的差距仅仅是一方面,更重要的因素仍然是成本。标准档的 S3 价格自 2016 年至今都没变过,一直是 0.023 $/GB月,每TB·月的人民币价格是 161 元。高级货色 S3 Express One Zone 的价格比标准档高了一个数量级,达到每月·GB $0.16,每TB·月的人民币价格为 1120 元。作为参考,我们可以引用《重新拿回计算机硬件的红利》和 《云盘是不是杀猪盘》中的数据进行对比:
这里本地 NVMe SSD 使用的例子是 Shannon DirectIO G5i 3.2TB MLC颗粒企业级SSD,是我们自己大规模使用的SSD卡。全新拆机零售件价 ¥2788 (闲鱼都有!),按5年60个月折算的每TB·月的人民币价格为 14.5 元。咱们退一步将按浪潮列表价 ¥4388 核算,TB·月价也就是 22.8。如果这个例子还不够,我们可以参考《是时候放弃云计算吗》里面 DHH 下云采购的 12 TB Gen4 NVMe 企业级 SSD,2390$ 一块,TB·月价也正好是 23 块钱。
那么问题就来了,性能好几个数量级的 NVMe SSD,为什么单价比 S3 标准档还要便宜一个数量级(161 vs 23),比 S3 Express 便宜了两个数量级(1120 vs 23 x3 )?如果我用这样的硬件(就算上三副本) + 开源软件自建一个对象存储服务,是不是可以实现三个数量级的性价比提升?
特别值得一提的,上面对比的还单纯是存储空间的费用,流入流出对象存储的流量费通常也是一笔非常可观的支出,有的档位收费靠的不是存储费用,而是取回流量费。还有 SSD 相对 HDD 可靠性的问题,云上数据自主可控的问题,这里就不再深入展开了。
当然云厂商也会辩解——说我们这个 S3 啊,可不是纯粹的存储硬件资源,而是一个开箱即用的服务。里面还包含了软件的知识产权,人力的维护成本;而自建故障率高,自建更危险,自建运维人力开销大等等等等,可惜,这套说辞放在 2006 年或者 2013 年还可以说得通,放在今天就显得有些滑稽了。
开源自建对象存储
在十几年前,绝大多数用户都缺乏IT自建能力,S3也没有足够成熟的开源替代品。用户可以容忍接受这样的高科技溢价。然而当各家云厂商、IDC都开始提供对象存储,甚至都出现了开源免费的对象存储方案(MinIO)后,卖方市场变成了买方市场,价值定价逻辑转变为成本定价逻辑后,不降反涨的资源溢价自然就会面临用户的拷问 —— 它到底给我带来了什么额外价值,以值得付出这种巨额费用?
云的倡导者声称,云托管服务相比开源自建更便宜,更简单,更快捷。对于个人站长,中小互联网企业这些云适用光谱内的用户来说,这么说没问题。如果你的数据只有几十GB,或者有一些中小规模的出海业务和CDN需求,我并不推荐你自建什么对象存储,而是出门左转去 Cloudflare 弄个 R2 —— 这也许就是最优解。
然而对于真正贡献营收大头的高价值中大规模客户来说,这些价值主张就不一定成立了。如果你主要是在本地存储使用 TB/PB 规模的数据,那么确实应当认真考虑一下自建对象存储服务的成本与收益 —— 现在用开源软件自建已经非常简单、稳定与成熟了。存储服务的可靠性主要取决于磁盘冗余:除了零星的硬盘故障 (HDD AFR 1%,SSD 2~3‰)需要你(请代维服务商)换上备件,并不会有多少额外的负担。
如果说混合了EBS/S3能力的开源 Ceph 还能算有不少运维复杂度,功能也没有完全拉齐;那么完全兼容 S3 的对象存储服务开源替代 MinIO 可以说是开箱即用了 —— 一个没有额外依赖的纯二进制,不需要几个配置参数就可以快速拉起,把服务器上的磁盘阵列转变为一个标准的本地 S3 兼容服务,甚至还集成了了 AWS 的 AK/SK/IAM 兼容实现!
从运维管理的角度看,Redis 的运维复杂度比 PostgreSQL 低一个数量级,而 MinIO 的运维复杂度又比 Redis 还要再低一个数量级。它简单到这样一种程度:我一个人可以花个一周不到时间把 MinIO 的部署/监控作为添头放到我们开源的 PostgreSQL RDS 方案里来,用作可选的中央备份存储仓库。
我在探探时,有几个 MinIO 集群就是这么搭建维护的:放了 25PB 数据,可能是国内先前最大规模的 MinIO 部署。用了多少人来维护呢?抽调了一个运维工程师 1/10 不到的工作时间来兼职罢了,而自建整体综合成本在云列表价 0.5 折浮动。实践出真知,如果有人骗你说对象存储自建很难很贵,你确实可以自己动手试试 —— 要不了几个钟头,这些销售 FUD 话术就会不攻自破。
对于对像存储服务来说,云的三点核心价值主张:“更便宜,更简单,更快捷” ,更简单这条说不上,更便宜走向了反面,恐怕只剩下最后一点更快捷了 —— 在这一点上确实没有谁能比过云,你确实可以在云上用1分钟不到在全世界所有区域申请PB级的存储服务,Which is Amazing!只不过你也要为这个鸡肋特权付出几十倍的高昂溢价。
小结
记得在 2019年4月1日,国内增值税正式从 16% 下调到 13% ,苹果官网随即全面降价,单品最高降价幅度达8% —— iPhone的几个典型产品都降了500元,把税点返还给了用户。但也有许多厂商选择装聋作哑维持原价,自己吃下这个福利 —— 白花花的银子怎么能随便散给别人呢?
类似的事情就发生在云计算领域 —— 硬件成本的指数下降,并没有在云厂商的服务价格上充分反映出来,而这一点,让公有云逐渐从普惠基础设施变成了垄断集中杀猪盘。
然而事情正在起变化,硬件重新变得有趣起来,而云厂商没有办法把这部分红利永远掩藏遮盖下去 —— 聪明的人开始计算数字,勇敢的人已经采取行动。像马斯克和DHH这样的先锋已经充分认识到了这一点,从云上下来,脚踏实地 —— 直接产生千万美元的财务效益,并且还有性能上的回报,运营也变得更加自主独立。越来越多的人会同样意识到这一点,追随先驱者做出明智的选择,拿回属于自己的硬件红利。
References
[1]
2006: https://aws.amazon.com/cn/blogs/aws/amazon_s3/[2]
2010: http://aws.typepad.com/aws/2010/11/what-can-i-say-another-amazon-s3-price-reduction.html[3]
2012: http://aws.typepad.com/aws/2012/11/amazon-s3-price-reduction-december-1-2012.html[4]
2014: http://aws.typepad.com/aws/2014/03/aws-price-reduction-42-ec2-s3-rds-elasticache-and-elastic-mapreduce.html[5]
2016: https://aws.amazon.com/ru/blogs/aws/aws-storage-update-s3-glacier-price-reductions/[6]
2023: https://aws.amazon.com/cn/s3/pricing[7]
首字节延迟相当拉垮: https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-performance.html[8]
存储与数据可靠性: https://help.aliyun.com/document_detail/476273.html[9]
io2 说明: https://aws.amazon.com/cn/blogs/storage/achieve-higher-database-performance-using-amazon-ebs-io2-block-express-volumes/[10]
Aliyun RDS SLA: https://terms.aliyun.com/legal-agreement/terms/suit_bu1_ali_cloud/suit_bu1_ali_cloud201910310944_35008.html?spm=a2c4g.11186623.0.0.270e6e37n8Exh5[11]
Amazon RDS SLA: https://d1.awsstatic.com/legal/amazonrdsservice/Amazon-RDS-Service-Level-Agreement-Chinese.pdf
参考阅读
互联网故障背后的草台班子们(马工)
云厂商眼中的客户:又穷又闲又缺爱(马工)